package com.project.mapper;

import com.project.bean.ProductBean;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

/**
 * @author lyl
 * description:商品mapper接口
 */
public interface IProductMapper {
    /**
     * 分页动态查询商品
     * 需要连表查询出商品数量并分页展示
     *
     * @param productName   商品名
     * @param startDate     起始日期
     * @param endDate       结束日期
     * @param productStatue 商品状态
     * @return
     */
    List<ProductBean> findByPage(@Param("productName") String productName, @Param("startDate") LocalDate startDate,
                                 @Param("endDate") LocalDate endDate, @Param("productStatue") String productStatue);

    /**
     * 按商品id查询商品信息，需要连表查询售出的数量
     *
     * @param productId 商品id
     * @return 商品对象
     */
    ProductBean findByProductId(@Param("productId") int productId);

    /**
     * 进行状态更新
     *
     * @param productId
     * @param productStatue
     */
    void updateProductStatue(@Param("productId") int productId, @Param("productStatue") String productStatue);

    /**
     * 添加新的商品对象
     *
     * @param productBean
     */
    void addNewProduct(ProductBean productBean);

    /**
     * 根据id修改商品的单价（此举动不会影响之前商品的总价计算，但是会影响当前所在的购物车商品价格计算）
     *
     * @param productId
     * @param productPrice
     */
    void updateProductPrice(@Param("productId") int productId, @Param("productPrice") int productPrice);
}

